// Author: Bjorn Schobben

#ifndef SCALAR_H
#define SCALAR_H

class Scalar
{
public:
	Scalar(double s = 0);
	Scalar(const Scalar& rhs);
	virtual ~Scalar();

	Scalar operator-() const;
	Scalar& operator+=(const Scalar& rhs);
	Scalar operator+(const Scalar& rhs) const;
	Scalar& operator-=(const Scalar& rhs);
	Scalar operator-(const Scalar& rhs) const;
	Scalar& operator*=(const Scalar& rhs);
	Scalar operator*(const Scalar& rhs) const;
	Scalar& operator/=(const Scalar& rhs);
	Scalar operator/(const Scalar& rhs) const;
	Scalar& operator=(const Scalar &rhs);
	bool operator<(const Scalar& rhs) const;
	bool operator>(const Scalar& rhs) const;

	Scalar CosineDegree() const;
	Scalar SineDegree() const;
	Scalar Cosine() const;
	Scalar Sine() const;
	Scalar Sqrt() const;
	Scalar Abs() const;
	bool IsNegative() const;

	int GetInt() const;
	int GetRoundInt() const;

	double GetValue() const;
	void ConvertToInteger();



private:
	double scalar;

	static const Scalar PI;
};

#endif //SCALAR_H

